package com.atao.baokede.service;

import com.atao.baokede.pojo.Cart;
import com.atao.baokede.pojo.DetailOrder;
import com.atao.baokede.pojo.Item;
import com.atao.baokede.pojo.PageBean;
import com.atao.baokede.pojo.dto.ItemDto;
import com.atao.baokede.pojo.vo.ChargeOrderVo;

import java.io.IOException;
import java.util.List;
import java.util.Map;

public interface ItemService {
    // 根据id查询商品
    Item findById(Long id);

    // 根据商户id查询商品
    PageBean<Item> findItemsByMerchantId(Integer pageNum, Integer pageSize);

    // 添加商品
    void addItem(ItemDto item) throws IOException;

    //分页查询所有已上架商品
    PageBean<Item> findAllActiveItems(Integer pageNum, Integer pageSize);

    // 搜索商品
    Map<String, Object> searchItems(String keyword, String searchAfter, String direction, int pageSize) throws IOException;

    // 查询首页商品
    PageBean<Item> findHomeItems(Integer pageNum);

    // 商品库存减num
    void reduceStock(Long itemId, Long num);

    // 批量减库存
    void reduceStockBatch(List<Cart> cartList);

    // 添加对应商品库存
    void addStock(DetailOrder detailOrder);

    // 批量添加对应商品库存
    void addStocks(List<DetailOrder> detailOrders);

    // 批量禁用对应商品
    void disableItemsByMerchantId(Long merchantId);

    // 批量启用对应商品
    void enableItemsByMerchantId(Long merchantId);

    // 禁用对应商品
    void disableItem(Long itemId) throws IOException;

    // 修改商品信息
    void updateItem(Item item) throws IOException;

    // 删除对应商品
    void deleteItem(Long itemId) throws IOException;

    // 批量删除对应商品
    void deleteItems(List<Long> itemIds) throws IOException;

    // 批量下架对应商品
    void disableItems(List<Long> itemIds) throws IOException;

    // 查询热销榜前100商品
    List<Item> getBestSellingItems();

    // 上架商品
    void enableItem(Long itemId);

    // 批量上架商品
    void enableItems(List<Long> itemIds);

    List<Long> findItemsIdByMerchantId(Long merchantId);

    // 批量查询商品
    List<Item> findItemsByIds(List<Long> itemIds);
}
